A*N*T*Z

ANTIA'S NEW TRUE Z \ H EROES




- Vlastnφ mφstnosti -




Jak jste se u₧ urΦit∞ dozv∞d∞li, ANTZ umo₧≥ujφ pomocφ tlaΦφtka v menu naΦφtat u₧ivatelskΘ mapy s koncovkou ".USR". Jak se ale vytvß°ejφ? Co vÜechno je k tomu pot°eba? Je to t∞₧kΘ?

Pokud chcete zkusit vyrobit vlastnφ mφstnost, postupn∞ si p°edvedeme, jak - staΦφ sledovat nßsledujφcφ kroky.





- Prvnφ mφstnost krok za krokem -


Jak u₧ bylo naznaΦeno, tvorba vlastnφ mφstnosti je velice jednoduchß. ┌pln∞ vßm bude staΦit i obyΦejnΘ "Microsoft Visual N++" (znßm² tΘ₧ jako "Notepad" Φi "Poznßmkov² blok").



Krok 1: Vytvo°enφ souboru

V podadresß°i hry "DATA\UserLevels" vytvo°te soubor "MyFirstRoom.usr" a otev°ete jej v Notepadu.



Krok 2: Tvar mφstnosti, zdi a chodbiΦky

Do souboru zapiÜte tyto °ßdky (bez nadpisu, jen ty hv∞zdiΦky):

MyFirstRoom.usr
**********
****   * *
*      * *
***      *
**   *****
**    ****
*       **
**  *   **
**  ******
**********

Takhle vytvo°φte mφstnost 10x10 polφΦek velikou. Na mφstech hv∞zdiΦek budou zdi, na mφstech mezer budou volnß pole. Zdi jsou d∙le₧itΘ - ka₧dß mφstnost musφ b²t kolem dokola (a₧ do kraj∙) obklopenß zdmi, aby z nφ neÜlo "utΘct" (a to i kdy₧ je jinak uzav°enß). To znamenß, ₧e vÜechny °ßdky mapy musφ b²t stejn∞ dlouhΘ. Pokud n∞kterΘ z t∞chto pravidel nedodr₧φte, a vytvo°φte n∞co takovΘhohle:

MyFirstRoom.usr
   *******
****   * *
*      * *
***      *
 *   *****
**    ***
*       *
**  *   *
 *  *****
 ****

hra mφstnost nenaΦte a upozornφ vßs na pravd∞podobnou chybu. Maximßlnφ mo₧nß velikost mφstnosti je 24x24 polφΦek, vΦetn∞ okrajov²ch zdφ.



Krok 3: Becherovka a mφsto na ni

Kapky Becherovky do mapy p°idßte prost∞ zapsßnφm znaku b (malΘ "b") na pat°iΦnΘ mφsto. Mφsto, kam mß hrßΦ Becherovku dostat (u nßs mu °φkßme "spi₧φrna") oznaΦφte znakem ?. Kapek Becherovky musφ b²t v₧dy alespo≥ tolik, kolik je v map∞ spi₧φren - jinak vßs hra na chybu upozornφ. P°idßme tedy do mφstnosti dv∞ kapky a dv∞ spi₧φrny:

MyFirstRoom.usr
**********
****   *?*
*b     * *
***      *
**   *****
**    ****
*      b**
**  *  ?**
**  ******
**********

Pokud byste cht∞li mφsto kapek Becherovky pou₧φt bedny ze Sokobana, pou₧ijte znak x. Bedny taky majφ tu v²hodu, ₧e jim nevadφ okena.



Krok 4: Zabydlenφ mφstnosti

V mφstnosti nßm po°ßd jeÜt∞ n∞co chybφ - p°esn∞ tak, jsou to mravenci. Ty m∙₧eme p°idat pomocφ znak∙ T, F, BW pro Tinka, Flo, Benedikta a Vilφka. P°idßme si je tedy do mφstnosti vÜechny Φty°i:

MyFirstRoom.usr
**********
****   *?*
*b     *F*
***      *
**T  *****
**    ****
*      b**
**B * W?**
**  ******
**********

Pokud bychom se spokojili s tφmto, byli by vÜichni Φty°i na zaΦßtku otoΦenφ nahoru. Aby byl ka₧d² otoΦen² jinam, p°idßme do souboru Φty°i °ßdky (je jedno, jestli je dßme na zaΦßtek, doprost°ed, nebo na konec):

MyFirstRoom.usr
**********
****   *?*
*b     *F*
***      *
**T  *** *
**    ****
*      b**
**B * W?**
**  ******
**********

Tink: >
Flo: v
Benedict: ^
Willi: <

ZnaΦky uvedenΘ za dvojteΦkou (cirkumflex na klßvese "6", malΘ "v" a znamΘnka menÜφ a v∞tÜφ) slou₧φ jako Üipky pro urΦenφ sm∞ru natoΦenφ mravence. JmΘna m∙₧ete pou₧φvat anglickß (Benedict, Willi), ale i Φeskß (Benedikt, Vilφk) - ale pomyslete p°i tom na ty ubohΘ anglicky mluvφcφ hrßΦe...



Krok 5: Nejen Becherovkou ₧iv je mravenec

Krom∞ Becherovky je mravenec ₧iv (p°φpadn∞ mrtev) takΘ dalÜφmi kapkami - vodou, okenou, nebo repelentem. Tyhle kapky se vklßdajφ pomocφ znak∙ w (voda), o (okena) a r (repelent). Tak si n∞jakΘ kapky p°idßme - pane vrchnφ, dvakrßt vodu, dvakrßt repelent a jednou okenu!

MyFirstRoom.usr
**********
****   *?*
*br    *F*
***      *
**Tw *** *
**w   ****
*    o b**
**Br* W?**
**  ******
**********

Tink: >
Flo: v
Benedict: ^
Willi: <



Krok 6: Ferda mravenec - p°edm∞ty vÜeho druhu

Te∩ se dostßvßme asi k tΘ nejzajφmav∞jÜφ Φßsti - do mφstnosti m∙₧eme vlo₧it libovoln∞ tvarovan² objekt. StaΦφ, kdy₧ na polφΦka, na kter²ch mß p°edm∞t le₧et, zapφÜeme libovoln² znak (pφsmena, Φφslice, interpunkΦnφ znamΘnka...), kter² nenφ vyu₧it² nap°. pro n∞kterΘho z mravenc∙, kapky atd. Znak takΘ musφ b²t pou₧iteln² v nßzvech soubor∙, tak₧e ₧ßdnΘ \ / : * ? " < > nebo |. Nepou₧φvejte takΘ Φßrku ani st°ednφk (,;).

Z polφΦek oznaΦen²ch stejn²m znakem pak vznikne jeden objekt. Tak si rovnou do mφstnosti n∞jakΘ p°idßme:

MyFirstRoom.usr
**********
**** $ *?*
*br  $L*F*
***   LLL*
**Tw *** *
**w   ****
*    o b**
**Br* W?**
**11******
**********

Tink: >
Flo: v
Benedict: ^
Willi: <

Vlo₧ili jsme tyto t°i p°edm∞ty:


  1. dvoupolφΦkov² vodorovn² p°edm∞t ze znak∙ 1 pod Benediktem
  2. dvoupolφΦkov² svisl² p°edm∞t ze znak∙ $ v hornφ Φßsti mφstnosti
  3. Φty°polφΦkov² p°edm∞t ve tvaru L ze znak∙ L, vedle Flo

Takto je mo₧nΘ vytvo°it objekty libovolnΘho tvaru (dokonce ani nemusφ b²t souvislΘ, tedy z jednoho kusu - m∙₧ete tak vytvo°it t°eba propojenΘ magnety nebo dvojteΦku z psacφho stroje...)

Pro vytvß°enφ objekt∙ m∙₧ete bezpeΦn∞ pou₧φt tyto znaky:

acdefghijklmpqstyzACDEGHIJKLMNOPQRSYZ0123456789.;º'[]{}~!@#$%&_-+=

NejlepÜφ a nejp°ehledn∞jÜφ ale asi bude pou₧φvat hlavn∞ Φφslice.
Pokud nemusφte, nepou₧φvejte pφsmena s hßΦky, Φßrkami a jinou diakritikou.
TakΘ se sna₧te pro p°edm∞ty pou₧φvat bu∩ jen malß, nebo jen velkß pφsmena - Windows je toti₧ (na rozdφl nap°. od Linuxu) v nßzvech soubor∙ nerozliÜujφ, tak₧e by vznikly potφ₧e p°i naΦφtßnφ soubor∙ s obrßzky.



Krok 7: ZahradniΦenφ, neboli p°idßvßnφ listφ

DalÜφm d∙le₧it²m prvkem jsou listy, kterΘ jednak vypadajφ celkem hezky, a hlavn∞ - jdou snφst. Listy lze p°ipojovat k existujφcφm objekt∙m, nebo vytvo°it list jako samostatn² p°edm∞t (kter² pak jde cel² snφst).

SamostatnΘ listy m∙₧eme p°idat pomocφ znak∙ n, u, ():

n pro samostatn² list ÜpiΦkou nahoru 
u pro samostatn² list ÜpiΦkou dol∙   
( pro samostatn² list ÜpiΦkou doleva 
) pro samostatn² list ÜpiΦkou doprava

Listy p°ipojenΘ k n∞jakΘmu p°edm∞tu se musejφ nachßzet hned vedle n∞j, natoΦenΘ sprßvn²m sm∞rem (ÜpiΦkou od p°edm∞tu). Pou₧φvajφ se pro n∞ znaky ^, v, <>:

^ pro p°ipojen² list se ÜpiΦkou nahoru 
v pro p°ipojen² list se ÜpiΦkou dol∙   
< pro p°ipojen² list se ÜpiΦkou doleva 
> pro p°ipojen² list se ÜpiΦkou doprava

Tak do mφstnosti hned n∞jakΘ to listφ nasypeme:

MyFirstRoom.usr
**********
****<$ *?*
*br  $L*F*
***  vLLL*
**Tw *** *
**w   ****
*)   o b**
**Br*nW?**
**11******
**********

Tink: >
Flo: v
Benedict: ^
Willi: <

K p°edm∞tu ze znak∙ $ jsme te∩ p°ipojili dva listy (jeden mφ°φ doleva, druh² dol∙), a navφc jsme do mφstnosti p°idali dva samostatnΘ listy - jeden kousek od Benedikta, druh² hned vedle Vilφka.



Krok 8: Obrßzky v klidu i v pohybu

Te∩ u₧ je mφstnost vlastn∞ hotovß - lze ji otev°φt a hrßt, uklßdat si v²sledky atd. Nevypadß ovÜem nic moc - zdi jsou ÜedΘ, objekty jsou slo₧enΘ ze ΦtvereΦk∙ v r∙zn²ch odstφnech modrΘ. Pomoc je snadnß - staΦφ do podadresß°e "DATA\UserLevels\UserGraphics" zkopφrovat ty sprßvnΘ obrßzky a pat°iΦn∞ je pojmenovat, aby je vaÜe mφstnost poznala.


-Pozadφ-

Obrßzek pozadφ by se m∞l sklßdat ze ΦtvereΦk∙, na kter²ch je bu∩ ze∩, nebo volno - tohle by m∞lo jφt na prvnφ pohled odliÜit.

ANTZ nejΦast∞ji pou₧φvajφ pozadφ v rozliÜenφ 8x8 pixel∙ na jedno polφΦko, n∞kdy ale takΘ 32x32 pixel∙ na jeden Φtverec. V tomhle sm∞ru tedy nenφ ₧ßdnΘ omezenφ, jenom je pot°eba °φct, ₧e pozadφ menÜφ ne₧ 8x8 pixel∙ na polφΦko vypadajφ u₧ hodn∞ hranat∞, a rozliÜenφ v∞tÜφ ne₧ 32x32 pixel∙ na pole je zbyteΦnΘ, proto₧e si hra pozadφ stejn∞ upravφ na tuto velikost.

Soubor s obrßzkem m∙₧e b²t ve formßtu .BMP nebo .TGA, nßzev musφ znφt "NßzevMφstnostiBackground.bmp", respektive "NßzevMφstnostiBackground.tga".

Pro naÜi ukßzkovou mφstnost tedy vezmeme u₧ p°ipraven² soubor "Background.bmp" a p°ejmenujeme jej na "MyFirstRoomBackground.bmp".

Nakonec jeÜt∞ do souboru s mφstnostφ p°idßme (op∞t na libovolnΘ mφsto) °ßdek s celkovou velikostφ pozadφ v pixelech (v naÜem p°φpad∞ 80x80 pixel∙):

MyFirstRoom.usr
map size: 80 x 80 pixels

**********
****<$ *?*
*br  $L*F*
***  vLLL*
**Tw *** *
**w   ****
*)   o b**
**Br*nW?**
**11******
**********

Tink: >
Flo: v
Benedict: ^
Willi: <

╪ßdek nemusφ obsahovat p°esn∞ toto - staΦφ jak²koliv °ßdek zaΦφnajφcφ na "map size", kter² po dvojteΦce obsahuje dv∞ Φφsla - skuteΦnou Üφ°ku a v²Üku obrßzku. Ostatnφ Φßsti ("x", "pixels" a jinΘ slou₧φ jenom pro zlepÜenφ Φitelnosti - m∙₧ete je psßt Φesky, ve zkratce, nebo t°eba v∙bec) - hra p°ijme nap°φklad i °ßdek "map size:80-80".


-P°edm∞ty-

P°i°azovßnφ obrßzk∙ p°edm∞t∙m nenφ o moc t∞₧Üφ. Pro ka₧d² p°edm∞t zapsan² pomocφ vlastnφch znak∙ (tj. ne kapky nebo listy) vytvo°te nebo najd∞te soubor s pat°iΦn²m obrßzkem (o listy se v∙bec nestarejte, ty se zobrazφ samy). Obrßzek pojmenujte "NßzevMφstnostiZnakP°edm∞tu.bmp" respektive "NßzevMφstnostiZnakP°edm∞tu.tga".

TGA soubory majφ tu v²hodu, ₧e mohou obsahovat i tzv. masku pr∙hlednosti, kterß urΦuje, jak moc je kterß Φßst obrßzku pr∙hlednß (lze tak vytvß°et t°eba polopr∙svitnΘ obrßzky sklen∞n²ch p°edm∞t∙). BMP obrßzky toto neumo₧≥ujφ; hra tedy jako pr∙hlednou barvu nastavφ bφlou (RGB: 255, 255, 255) - proto v BMP obrßzcφch Φistou bφlou pou₧φvejte jen na mφsta, kterß chcete mφt pr∙hlednß.

Velikost obrßzk∙ p°edm∞t∙ musφ b²t v m∞°φtku 1:1, Φili ka₧dΘ polφΦko 32x32 pixel∙ velikΘ. Ka₧d² p°edm∞t takΘ m∙₧e b²t rozanimovan² - staΦφ, aby v obrßzku byly za sebou se°azenΘ jednotlivΘ snφmky animace (v jednom °ßdku).

Pro naÜi mφstnost budeme pot°ebovat t°i obrßzky:


  1. 64x32 pixel∙ velik² obrßzek "MyFirstRoom1.tga" pro p°edm∞t ze znak∙ 1 pod Benediktem
  2. 32x64 pixel∙ velik² obrßzek "MyFirstRoom$.tga" pro p°edm∞t ze znak∙ $ v hornφ Φßsti mφstnosti
  3. 96x64 pixel∙ velik² obrßzek "MyFirstRoomL.bmp" se Φty°mi snφmky pro p°edm∞t ze znak∙ L vedle Flo

Najφt je m∙₧ete v podadresß°i "DATA\UserLevels\UserGraphics" pod nßzvy "Branch1.tga", "Branch2.tga" a "SharkNail.bmp". Tyto soubory staΦφ jen p°ejmenovat.

Ka₧d² p°edm∞t pot°ebuje vlastnφ obrßzek. Pak u₧ jenom pro ka₧d² p°edm∞t s obrßzkem vlo₧φme na libovolnΘ mφsto souboru s mφstnostφ nßsledujφcφ °ßdek:

"object ZnakP°edm∞tu: N frame(s), XY pixels"

MyFirstRoom.usr
map size: 80 x 80 pixels

**********
****<$ *?*
*br  $L*F*
***  vLLL*
**Tw *** *
**w   ****
*)   o b**
**Br*nW?**
**11******
**********

Tink: >
Flo: v
Benedict: ^
Willi: <

object 1: 1 frame, 64 x 32 pixels
object $: 1 frame, 32 x 64 pixels
object L: 4 frames, 96 x 64 pixels

Jako minule, ani tady nejsou v²razy "frame(s)", "pixels" atd. d∙le₧itΘ - hra p°ijme nap°φklad i °ßdek "object L: 4-96-64" nebo "object L: Drah² poΦφtaΦi, obrßzek L mß tuÜφm 4 snφmky, a je 96 pixel∙ Üirok² a 64 pixel∙ vysok²". D∙le₧itΘ je zachovat po°adφ snφmky - Üφ°ka - v²Üka.

èφ°ka a v²Üka se vztahujφ k velikosti jednoho snφmku, ne celΘho obrßzku. Celkovou velikost obrßzku nastavte tak, aby jednotlivΘ snφmky pokryly celou plochu (nenechßvejte obrßzek v∞tÜφ, ne₧ je pot°eba).



Krok 9: DalÜφ mo₧nosti

Soubory vlastnφch mφstnostφ umo₧≥ujφ jeÜt∞ n∞kolik dalÜφch v∞cφ: pokud nap°φklad vytvß°φte ·rovn∞ ze Sokobana, m∙₧e se hodit mo₧nost vypnout zobrazovßnφ spi₧φren tmavÜφm puntφkem. Toho docφlφte pomocφ vlo₧enφ °ßdku

"show lift-zones: 0"

Hlavn∞ ale nezapome≥te mφsta pro Becherovku oznaΦit alespo≥ v obrßzku pozadφ (t°eba t∞mi zelen²mi teΦkami) - jinak vßm hrßΦi moc nepod∞kujφ.


Do souboru s mφstnostφ takΘ m∙₧ete p°idßvat komentß°e - cokoliv od st°ednφku do konce °ßdku hra ignoruje.


Hra takΘ do souboru p°idßvß °ßdek s poΦtem krok∙ v dosavadnφm nejkratÜφm °eÜenφ v podob∞ nap°.

"solution: 286"





- Ono to mluvφ! -


Te∩ je naÜe mφstnost skoro dokonalß. Chybφ jφ snad jedinß v∞c - n∞jak² ten rozhovor, nebo alespo≥ komentß° od naÜich mravenc∙. I to jde jednoduÜe za°φdit.

V podadresß°i "DATA\UserLevels\UserDialogs" vytvo°φme soubor s nßzvem "NßzevMφstnosti.dlg", v naÜem p°φpad∞ tedy "MyFirstRoom.dlg".

Do n∞j pak budeme zapisovat jednotlivΘ repliky. Zßpis ka₧dΘ repliky se sklßdß ze dvou °ßdk∙. Na prvnφm jsou spouÜt∞cφ podmφnky, na druhΘm vlastnosti repliky a samotn² text. Mezi t∞mito dv∞ma °ßdky nesmφ b²t ₧ßdnΘ °ßdky vynechanΘ. Naopak mezi jednotliv²mi dvojicemi °ßdky vynechßvat lze - zvyÜuje to Φitelnost souboru.


SpouÜt∞cφ podmφnky

Ka₧dß replika mß jednu nebo vφce spouÜt∞cφch podmφnek, kterΘ urΦujφ, kdy bude danß replika pronesena. Replika je spuÜt∞na jen tehdy, kdy₧ jsou vÜechny jejφ podmφnky spln∞ny. Podmφnek je mo₧nΘ nastavit vφce - staΦφ je na °ßdku odd∞lovat Φßrkami, nap°.:

"Time > 5000, Steps >= 4, LeavesEaten = 0"

Ka₧dß z podmφnek mß v²raz na levΘ a pravΘ stran∞ a operßtor porovnßnφ mezi nimi. Jako operßtory porovnßnφ lze pou₧φt tato znamΘnka:

=  (levß strana se rovnß pravΘ stran∞)           
<> (levß strana se nerovnß pravΘ stran∞)         
>= (levß strana je v∞tÜφ nebo rovnß pravΘ stran∞)
<= (levß strana je menÜφ nebo rovnß pravΘ stran∞)
>  (levß strana je v∞tÜφ ne₧ pravß strana)       
<  (levß strana je menÜφ ne₧ pravß strana)       

V²razy se mohou sklßdat z prom∞nnΘ, ke kterΘ je p°iΦtena nebo odeΦtena n∞jakß celoΦφselnß konstanta (nap°φklad +30, -1 atd.) Pokud je ve v²razu prom∞nnß, musφ b²t na prvnφm mφst∞, konstanta musφ b²t uvedena a₧ za nφ. ANTZ rozeznßvajφ tyto prom∞nnΘ:


Time
, Steps, LeavesEaten, Tink X, Tink Y, Flo X, Flo Y, Benedict X, Benedict Y, Willi X, Willi Y, ObjectByChar ? X, ObjectByChar ? Y, ObjectByIndex ? X, ObjectByIndex ? Y, AlreadySaid #


Time - ╚as, uplynul² od startu mφstnosti, m∞°en² v milisekundßch

Steps - PoΦet krok∙, kterΘ u₧ hrßΦ ud∞lal

LeavesEaten - PoΦet list∙, kterΘ u₧ Vilφk sn∞dl

Tink X, Flo X, Benedict X, Willi X - Vodorovnß pozice p°φsluÜnΘho mravence. Lev² okraj mapy mß X sou°adnici 1, ale na nφ musφ b²t ze∩. Nejni₧Üφ smysluplnß hodnota je tedy 2 - tehdy mravenec stojφ u levΘho okraje mapy.
Tink Y, Flo Y, Benedict Y, Willi Y - Svislß pozice p°φsluÜnΘho mravence. Hornφ okraj mapy mß Y sou°adnici 1, ale na nφ musφ b²t ze∩. Nejni₧Üφ smysluplnß hodnota je tedy 2 - tehdy mravenec stojφ u hornφho okraje mapy.

ObjectByChar ? X - Vodorovnß pozice levΘho hornφho rohu objektu. Mφsto otaznφku dopl≥te znak, ze kterΘho je dan² objekt slo₧en. Takto jdou zφskßvat informace pouze o p°edm∞tech, kterΘ jsou slo₧enΘ z vlastnφch znak∙. Nelze tak zφskat informace o kapkßch nebo samostatn²ch listech.
ObjectByChar ? Y - Svislß pozice levΘho hornφho rohu objektu. Mφsto otaznφku dopl≥te znak, ze kterΘho je dan² objekt slo₧en.

ObjectByIndex ? X - Vodorovnß pozice levΘho hornφho rohu objektu. Mφsto otaznφku dopl≥te po°adφ danΘho objektu. Takto lze p°istupovat ke vÜem objekt∙m, ka₧d² ve h°e dostane svΘ "po°adφ" - objekty jsou Φφslovßny od jedniΦky, postupn∞ zleva doprava a shora dol∙. P°esto bude nejsnazÜφ si Φφslo zkontrolovat p°φmo ve h°e: naΦt∞te svou mφstnost a podr₧te klßvesu Control - na vÜech objektech se objevφ jejich Φφsla.
ObjectByIndex ? Y - Svislß pozice levΘho hornφho rohu objektu. Mφsto otaznφku dopl≥te po°adφ danΘho objektu.

AlreadySaid # - UrΦuje, jestli byla danß replika u₧ pronesena, nebo ne. Mφsto m°φ₧ky dopl≥te ID (identifikaΦnφ Φφslo, viz nφ₧e) repliky. Pokud u₧ byla pronesena, prom∞nnß mß hodnotu 1, jinak mß hodnotu 0. Ka₧dß replika se pronese nejv²Üe jednou.


╪ßdky s podmφnkami pak mohou vypadat t°eba takto (bez uvozovek):

"Time > 7000, Tink X = ObjectByIndex 10 X + 1, Tink Y = ObjectByIndex 10 Y"
...co₧ znamenß...
Spus¥ repliku, pokud u₧ od startu uplynulo p°es 7 sekund a Tink je na polφΦku vpravo od levΘho hornφho rohu objektu s Φφslem 10.

"Steps >= 20, ObjectByChar L X = 2, AlreadySaid 5 = 0"
...co₧ znamenß...
Spus¥ repliku, pokud u₧ hrßΦ ud∞lal alespo≥ 20 krok∙, p°edm∞t slo₧en² ze znak∙ L je u levΘho okraje mφstnosti a jeÜt∞ nebyla pronesena replika s Φφslem 5.


Vlastnosti repliky

Vlastnosti a text repliky se zapisujφ na druh² °ßdek. ZaΦφnß znaky -> nebo =>, nßsledovan²mi jmΘnem mluvφcφho mravence (Tink, Flo, Benedict, Willi, nebo jejich Φeskß jmΘna) a dvojteΦkou. PotΘ je uveden vlastnφ text repliky - ten je zapsßn mezi dvojici cirkumflex∙ (^), svislou Φarou (|) je rozd∞len na dv∞ Φßsti - anglickou a Φeskou. Pokud se necφtφte na vytvß°enφ anglick²ch rozhovor∙, m∙₧ete Φßst p°ed svislou Φarou vynechat - Φßru ale zapiÜte v₧dy.

"-> Willi: ^Hello, player!|Ahoj, hrßΦi!^"
"-> Willi: ^|Ahoj, hrßΦi!^"

Za text je jeÜt∞ pot°eba doplnit informace o ID (identifikaΦnφm Φφsle) repliky, ΦasovΘ prodlev∞, kterß musφ uplynout od konce minulΘ repliky (v milisekundßch), a v²razu mluvφcφho mravence. Tyto ·daje lze zadßvat v libovolnΘm po°adφ, DelayFace jsou nepovinnΘ.

"-> Willi: ^Oof, I hope you don't want me to eat that all, player...|Uf, hrßΦi, doufßm, ₧e nechceÜ, abych to sn∞dl vÜechno...^ ID: 17 Delay: 1500 Face: 1"

Tato replika bude mφt ID 17, pronesena bude nejd°φve vte°inu a p∙l po konci minulΘ v∞ty, a Vilφk p°i nφ nasadφ v²raz Φφslo 1.

Pokud nenφ uveden parametr Delay, nastavφ se automaticky na 1000 (jednu sekundu). Pokud nenφ uveden parametr Face, nasadφ mravenec neutrßlnφ v²raz 2. Hra obsahuje tyto v²razy:

  1. èiroce otev°enΘ oΦi   
  2. Neutrßlnφ v²raz       
  3. P°iv°enΘ oΦi          
  4. Zav°enΘ oΦi           
  5. Smutn² v²raz          
  6. Tink - mrknutφ        
    Flo - Üklebenφ        
    Benedikt - mraΦenφ    
    Vilφk - zvednutΘ oboΦφ
  7. P°ekvapenφ            

Oba °ßdky repliky by pak mohly vypadat takhle:

MyFirstRoom.dlg
LeavesEaten >= 3
-> Willi: ^Oof, I hope you don't want me to eat that all, player...|Uf, hrßΦi, doufßm, ₧e nechceÜ, abych to sn∞dl vÜechno...^ ID: 17 Delay: 1500 Face: 1

Replika se spustφ, pokud v naÜφ mφstnosti snφ Vilφk t°i a vφce list∙. Vilφk p°i nφ doÜiroka otev°e oΦi.


Zvuk v MP3

Pokud budete mφt k dispozici MP3 soubor s danou replikou, staΦφ jej zkopφrovat do podadresß°e "DATA\UserLevels\UserSpeech" pod nßzvem "NßzevMφstnostiIDRepliky_╚φsloJazyka.mp3" - Φφslo jazyka je bu∩ 1 pro angliΦtinu, nebo 2 pro ΦeÜtinu. Vilφkova replika z p°edchozφho p°φkladu by tedy m∞la pro ΦeÜtinu soubor se jmΘnem "MyFirstRoom17_2.mp3" - v adresß°i u₧ se nachßzφ pod jmΘnem "WilliOof_2.mp3" - staΦφ ji tedy jen p°ejmenovat.

Pou₧φvejte rad∞ji soubory v ni₧Üφ kvalit∞ - soubory s vyÜÜφm bitrate hru zpomalujφ.


SpouÜt∞nφ repliky vφce zp∙soby

Kdy₧ budete chtφt jednu repliku aktivovat n∞kolika r∙zn²mi zp∙soby, staΦφ ji do .DLG souboru zapsat vφcekrßt - poka₧dΘ se stejn²m textem a ID, ale s jin²mi podmφnkami. Replika se pak pronese (po°ßd jenom jednou) po spln∞nφ kterΘkoli skupiny podmφnek.

MySecondRoom.dlg
Tink X = ObjectByIndex 1 X - 1, Tink Y = ObjectByIndex 1 Y
-> Tink: ^I'm at the drop!|Jsem u kapky!^ ID: 34

Tink X = ObjectByIndex 1 X + 1, Tink Y = ObjectByIndex 1 Y
-> Tink: ^I'm at the drop!|Jsem u kapky!^ ID: 34

Tink X = ObjectByIndex 1 X, Tink Y = ObjectByIndex 1 Y - 1
-> Tink: ^I'm at the drop!|Jsem u kapky!^ ID: 34

Tink X = ObjectByIndex 1 X, Tink Y = ObjectByIndex 1 Y + 1
-> Tink: ^I'm at the drop!|Jsem u kapky!^ ID: 34

V tomto p°φklad∞ Tink oznßmφ, ₧e je u kapky (objektu s Φφslem 1), a¥ k nφ p°ijde z kterΘkoliv strany.


Nßvaznost jednotliv²ch replik - rozhovory

Pokud chcete, aby na sebe n∞kolik replik navazovalo a tvo°ilo tak rozhovor, staΦφ tomu p°izp∙sobit jejich podmφnky. TakΘ nezapome≥te sprßvn∞ nastavovat hodnoty Delay - nap°φklad u jednΘ v∞ty rozd∞lenΘ do dvou replik by m∞la mφt druhß replika Delay nastaveno na 0, aby odstartovala ihned po skonΦenφ tΘ prvnφ. Pokud tuto vlastnost nenastavφte, bude jejφ hodnota 1000 milisekund.

MyThirdRoom.dlg
Time > 5000
-> Flo: ^Let's show our player how to make dialogues!|Poj∩me hrßΦi ukßzat, jak na rozhovory!^ ID: 1 Face: 1

AlreadySaid 1 = 1
-> Tink: ^Okay.|Tak fajn.^ ID: 2 Face: 3

AlreadySaid 2 = 1
-> Flo: ^It's a pity...|Jenom je Ükoda...^ ID: 3 Face: 5

AlreadySaid 3 = 1
-> Flo: ^...we have no MP3 files for this dialoque.|...₧e pro tenhle rozhovor nemßme ₧ßdnΘ MP3.^ ID: 4 Delay: 0 Face: 6

AlreadySaid 4 = 1
-> Tink: ^Well, I think this should be enough.|No, myslφm, ₧e tohle mu bude staΦit.^ ID: 5 Delay: 1500 Face: 6


Repliky nejen od mravenc∙

PronßÜet repliky nemusejφ jen mravenci - mluvit mohou p°edm∞ty, vyprav∞Φ, rodilφ mluvΦφ...

StaΦφ jako mluvφcφho zapsat libovolnΘ jinΘ jmΘno, a na zaΦßtek obou polovin textu (i ΦeskΘ, i anglickΘ) vlo₧it °et∞zec urΦujφcφ barvu textu. ╪et∞zec mß podobu #$00ffffff, kde poslednφch Üest znak∙ hexadecimßln∞ reprezentuje barvu ve slo₧kßch B(modrß), G(zelenß) a R(Φervenß). Prvnφ Φty°i znaky musφ z∙stat #$00. Pokud barvu nezadßte, bude Üedß.

#$00000000 - Φernß       
#$00ffffff - bφlß        
#$00ff0000 - syt∞ modrß  
#$0000ff00 - syt∞ zelenß 
#$000000ff - syt∞ Φervenß
#$00ffff00 - azurovß     
#$00ff00ff - purpurovß   
#$0000ffff - ₧lutß       
atd...

Pokud vaÜe replika bude obsahovat prßzdn² text (tj. ^|^) a jako mluvφcφ nebude zapsßn ₧ßdn² mravenec, nebude replika sice zobrazena, ale pokud hra nalezne pat°iΦn² MP3 soubor, p°ehraje jej - tak lze do mφstnostφ zapracovat t°eba zvonφcφ telefon nebo jinΘ zvuky. V nßsledujφcφm p°φklad∞ bychom pro zvuk telefonu pot°ebovali soubor "MyFourthRoom15_1.mp3" pro anglickou verzi, a "MyFourthRoom15_2.mp3" pro Φeskou:

MyFourthRoom.dlg
Time > 2000
-> Nail: ^#$00997676Hello...|#$00997676Ahoj...^ ID: 1 Face: 1

Benedict X = 4, Benedict Y = 6
-> Phone: ^|^ ID: 15


Triky s podmφnkami, aneb "Bylo, nebylo..."

Pokud pot°ebujete n∞jakou repliku pronßÜet v zßvislosti na tom, jestli byla urΦitß podmφnka spln∞na n∞kdy d°φve, lze toho docφlit jednφm mal²m trikem:

Vlo₧te do souboru prßzdnou repliku (tedy s textem ^|^, a pochopiteln∞ takΘ bez zvuku v MP3), jejφm₧ mluvΦφm nebude ₧ßdn² mravenec. Tu nechte "spustit" za dan²ch podmφnek - nap°. pokud Flo dojde do rohu mφstnosti. Proto₧e bude jejφ text prßzdn², nic viditelnΘho (nebo slyÜitelnΘho) se nestane. Jejφ prom∞nnß AlreadySaid ale nabyde hodnoty 1. Toho lze n∞kdy pozd∞ji vyu₧φt:

MyFifthRoom.dlg
Flo X = 2, Flo Y = 2
-> Nothing: ^|^ ID: 318

Steps >= 100, AlreadySaid 318 = 0, AlreadySaid 320 = 0
-> Flo: ^Oof, so many steps and I haven't been to the corner yet!|Uf, tolik jsem se nachodila, a jeÜt∞ jsem ani nebyla v rohu!^ ID: 319

Steps >= 100, AlreadySaid 318 = 1, AlreadySaid 319 = 0
-> Flo: ^Oof, so many steps... At least, I've been to the corner...|Uf, tolik jsem se nachodila... Alespo≥, ₧e u₧ jsem byla v rohu...^ ID: 320






- Ono to i hraje! -


Pokud chcete, aby vaÜe mφstnost vypadala skuteΦn∞ profesionßln∞, m∙₧ete do nφ p°idat i vlastnφ hudbu ve formßtu MIDI. K tomu staΦφ v adresß°i "DATA\UserLevels\UserMusic" vytvo°it podadresß° "NßzevMφstnosti" a zkopφrovat do n∞j jeden nebo vφce ".mid" soubor∙. Ty se pak budou b∞hem °eÜenφ vaÜφ mφstnosti p°ehrßvat v nßhodnΘm po°adφ. P°φklad si m∙₧ete prohlΘdnout u mφstnosti "Adolf", kterß mß jeden soubor s hudbou. Pokud takov²to adresß° nevytvo°φte, bude se p°ehrßvat b∞₧nß hudba hry.






- Zßv∞rem -


Nynφ u₧ vφte vÜe, co je pot°eba k vytvo°enφ vlastnφ mφstnosti. D∙le₧itou podmφnkou samoz°ejm∞ je, aby vaÜe mφstnost m∞la °eÜenφ - to ovÜem v∙bec neznamenß, ₧e by muselo b²t jednoduchΘ.

Pokud n∞jakΘ mφstnosti vytvo°φte, budeme jen rßdi, pokud nßm je v p°φloze e-mailu poÜlete ukßzat (nejlΘpe se vÜemi soubory, kterΘ k mφstnosti pat°φ - obrßzky, dialogy, MP3 soubory atd.)

VÜechny vaÜe mφstnosti zkusφme vy°eÜit, a pokud se nßm n∞kterß bude opravdu lφbit, m∙₧eme vßm k nφ klidn∞ doplnit p°φpadnou grafiku (v²jimeΦn∞ snad i namluvit repliky) a poslat vßm ji (i s naÜφm nejlepÜφm °eÜenφm) zp∞t. Krom∞ toho vßm m∙₧eme poslat i mφstnosti od jin²ch hrßΦ∙. Mφstnosti takΘ rßdi umφstφme na p°φpadn²ch WWW strßnkßch hry.

V adresß°i "DATA\UserLevels" se u₧ nachßzejφ dv∞ p°ipravenΘ mφstnosti - "Adolf" a "LongDrinkRemake". Ta prvnφ je replikou snad nejznßm∞jÜφ ·rovn∞ ze Sokobana, ta druhß je replikou jednΘ mφstnosti ze samotn²ch mravenc∙. Krom∞ t∞chto mφstnostφ je vßm k dispozici i n∞kolik MP3 soubor∙ jednotliv²ch mravenc∙ spolu s obrßzky n∞kolika p°edm∞t∙ - v∞tviΦek, kamen∙, h°ebφk∙ atd.

Te∩ u₧ to tedy chce jenom n∞jak² ∩ßbelsk² nßpad...



Copyright © 2004 - Karel èt∞pka jr.